home *** CD-ROM | disk | FTP | other *** search
/ Developer CD Series 1992 June: ROMin Holiday / ADC Developer CD (1992-06) (''ROMin Holiday'')_iso / Developer Connection - 06-1992.iso / Developer Essentials / MPW Interfaces & Libraries / CIncludes / RTLib.h < prev    next >
Encoding:
C/C++ Source or Header  |  1992-01-29  |  2.6 KB  |  128 lines  |  [TEXT/MPS ]

  1.  
  2. /************************************************************
  3.  
  4. Created: Friday, August 2, 1991 at 3:45 PM
  5.  RTLib.h
  6.  C Interface to the Macintosh Libraries
  7.  
  8.  
  9.   Copyright Apple Computer, Inc. 1990-1991
  10.   All rights reserved
  11.  
  12. ************************************************************/
  13.  
  14. #ifndef __RTLib__
  15. #define __RTLib__
  16.  
  17. #ifndef __TYPES__
  18. #include <Types.h>
  19. #endif
  20.  
  21. #ifdef __cplusplus
  22. extern "C" {
  23. #endif
  24.  
  25. /*        Error Codes        */
  26.  
  27. enum { eRTNoErr=0, eRTBadVersion=2, eRTInvalidOp=4, eRTInvalidJTPtr=6 };
  28.  
  29.  
  30. /*        Action Codes        */
  31.  
  32. enum { kRTSysErr=0, kRTRetry=1, kRTContinue=2 };
  33.  
  34.  
  35. /*        Runtime Operations        */
  36.  
  37. enum    {    kRTGetVersion=10,        kRTGetVersionA5=11,
  38.              kRTGetJTAddress=12,    kRTGetJTAddressA5=13,
  39.              kRTSetPreLoad=14,        kRTSetPreLoadA5=15,
  40.              kRTSetSegLoadErr=16,    kRTSetSegLoadErrA5=17,
  41.              kRTSetPostLoad=18,    kRTSetPostLoadA5=19,
  42.              kRTSetPreUnload=20,    kRTSetPreUnloadA5=21,
  43.              kRTPreLaunch=22,        kRTPostLaunch=23
  44.         };
  45.  
  46.  
  47. /*        Version and Jump Table Entry Address Parameters        */
  48.  
  49. struct RTGetVersionParam {
  50.     unsigned short    fVersion;
  51. };
  52.  
  53. typedef struct RTGetVersionParam RTGetVersionParam;
  54.  
  55.  
  56. struct RTGetJTAddrParam {
  57.     void*    fJTAddr;
  58.     void*    fCodeAddr;
  59. };
  60.  
  61. typedef struct RTGetJTAddrParam RTGetJTAddrParam;
  62.  
  63.  
  64. /*        RTState Definition        */
  65.  
  66. struct RTState {
  67.     unsigned short    fVersion;                /* run-time version */
  68.     void*                fSP;                        /* SP: &-of user return address */
  69.     void*                fJTAddr;                    /* PC: &-of called jump table entry */
  70.     long                fRegisters[15];        /* registers D0-D7 and A0-A6 when */
  71.                                                     /*        _LoadSeg was called */
  72.     short                fSegNo;                    /*    segment number */
  73.     ResType            fSegType;                /*    segment type (normally 'CODE') */
  74.     long                fSegSize;                /*    segment size */
  75.     Boolean            fSegInCore;                /*    true if segment is in memory */
  76.     Boolean            fReserved1;                /* (reserved for future use) */
  77.     OSErr                fOSErr;                    /*    error number */
  78.     long                fReserved2;                /* (reserved for future use) */
  79. };
  80.  
  81. typedef struct RTState RTState;
  82.  
  83.  
  84. /*        Version Definitions        */
  85.  
  86. #define    kVersion32bit            0xFFFF            
  87. #define    kVersion16bit            0x0000                    
  88.  
  89.  
  90. /*        User Handler Definition        */
  91.  
  92. typedef pascal short (*SegLoadHdlrPtr) (RTState* state);
  93.  
  94.  
  95. /*        Segment Loader Hook Parameters        */
  96.  
  97. struct RTSetSegLoadParam {
  98.     SegLoadHdlrPtr    fUserHdlr;
  99.     SegLoadHdlrPtr    fOldUserHdlr;
  100. };
  101.  
  102. typedef struct RTSetSegLoadParam RTSetSegLoadParam;
  103.  
  104.  
  105. /*        Runtime Parameter Block        */
  106.  
  107. struct RTPB {
  108.     short    fOperation;
  109.     void*    fA5;
  110.     union    {
  111.         RTGetVersionParam    fVersionParam;
  112.         RTGetJTAddrParam    fJTAddrParam;
  113.         RTSetSegLoadParam    fSegLoadParam;
  114.     } fRTParam;
  115. };
  116.  
  117. typedef struct RTPB RTPB;
  118.  
  119. pascal OSErr Runtime (RTPB* runtime_parms);
  120.  
  121.  
  122. #ifdef __cplusplus
  123. }
  124. #endif
  125.  
  126. #endif    /* __RTLib__ */
  127.  
  128.